package com.netty.bytebuf;

import io.netty.buffer.ByteBuf;
import io.netty.util.ReferenceCountUtil;

import java.util.Objects;

/**
 * @author xl-9527
 * @since 2025/8/6
 **/
public class ByteBufOpcDemo {

    public void release(final ByteBuf byteBuf) {
        if (Objects.nonNull(byteBuf)) {
            ReferenceCountUtil.release(byteBuf);
        }
    }

    /**
     * ByteBuf 切片，slice 是 netty 0 拷贝的一种实现，他只是在原始内存的操作并不会 copy 一个新的内存分配给 slice 以后的对象，这样也就意味着不可以随意的删除或者添加数据或发生。exception
     * 1：但是可以对原始 byteBuf 做修改行为
     * 2: 不可以对添加或者删除会导致异常
     * 3: 不可以 release 会影响 slice 以后的对象使用
     */
    public void slice(final ByteBuf byteBuf) {
        final ByteBuf b1 = byteBuf.slice(0, byteBuf.capacity() / 2);
        final ByteBuf b2 = byteBuf.slice(byteBuf.capacity() / 2, byteBuf.capacity());
    }
}
